Technical Q&A

Java 12 - Runtime.exec を使って URL を開く(1999 年 6 月 2 日更新)


Q: Java アプリケーションからブラウザを使って URL を開くには、どうすればいいでしょうか?

A: 最も簡単なのは、java.lang.Runtime クラスの exec 関数を使い、ブラウザと URL をパラメータとして渡す方法です。以下の簡単な例では、使用するブラウザを選択するファイルダイアログを表示してから、ブラウザを起動して指定されたURLを開いています。

import java.awt.Frame;
                  import java.awt.FileDialog;
                  import java.io.File;
                  import java.io.IOException;
                  
                  public class ExecTest extends Frame
{
                  
    public static void main(String[ ] args)
    {
        new ExecTest();
        System.exit(0);
    }
                  
    public ExecTest()
    {
        String browserName;
        String url = "http://developer.apple.com/java/";
                  
                          //ユーザが使用するブラウザを見つけられるように、FileDialog を設定する
        FileDialog fileDialog = new java.awt.FileDialog(this);
        fileDialog.setMode(FileDialog.LOAD);
        fileDialog.setTitle("Choose the browser to use:");
        fileDialog.setVisible(true);
                  
                           //ダイアログからパス情報を取得し、それを確認する
                         String resultPath = fileDialog.getDirectory();
        String resultFile = fileDialog.getFile();
        if(resultPath != null && resultPath.length()!= 0 &&           resultFile != null && resultFile.length() != 0)
        {
            File file = new File(resultPath + resultFile);
            if(file != null)
            {
                browserName = file.getPath();
                  
                try
                                  {
                    //ブラウザを起動し、必要な URL を渡す
                    Runtime.getRuntime().exec(newString[ ] {browserName, url});
                }
                catch (IOException exc)
                {
                    exc.printStackTrace();
                }
            }
        }
    }
}

 

この例を実際に利用する場合は、ブラウザの情報をキャッシュして、そのブラウザを見つけられない場合にのみユーザにブラウザを尋ねるように修正するとよいでしょう。

より洗練された方法としては、ユーザにブラウザを選択するよう要求せずに、JConfig を使ってデフォルトのブラウザの情報を取得するというものがあります。

ユーザのデフォルトのブラウザで URL を開くだけなら、JConfig を使う方法の代替案として、Eric Albert 氏の作成した BrowserLauncher を使う方法もあります。BrowserLauncher は Java のクラスで、プログラマが Java のみでユーザのデフォルトの Web ブラウザを開けるように設計されています。追加のライブラリや、JDK 1.1 以外の機能は不要です。BrowserLauncher は商用か非商用かにかかわらず、自由に利用できます。


-- Levi Brown
-- Revised by Levi Brown
Worldwide Developer Technical Support

Technical Q&As | Contents
Previous Question | Next Question

To contact us, please use the Contact Us page.